The present invention relates to asset management systems.
Throughout the years, movie makers have often tried to tell stories involving make-believe creatures, far away places, and fantastic things. To do so, they have often relied on animation techniques to bring the make-believe to “life.” Two of the major paths in animation have traditionally included, drawing-based animation techniques and stop motion animation techniques.
Drawing-based animation techniques were refined in the twentieth century, by movie makers such as Walt Disney and used in movies such as “Snow White and the Seven Dwarfs” (1937) and “Fantasia” (1940). This animation technique typically required artists to hand-draw (or paint) animated images onto a transparent media or cells. After painting, each cell would then be captured or recorded onto film as one or more frames in a movie.
Stop motion-based animation techniques typically required the construction of miniature sets, props, and characters. The filmmakers would construct the sets, add props, and position the miniature characters in a pose. After the animator was happy with the appearance of the scene, one or more frames of film would be taken of that specific arrangement. Stop motion animation techniques were developed by movie makers such as Willis O'Brien for movies such as “King Kong” (1933). Subsequently, these techniques were refined by animators such as Ray Harryhausen for movies including “Mighty Joe Young” (1948) and Clash Of The Titans (1981).
With the wide-spread availability of computers in the later part of the twentieth century, animators began to rely upon computers to assist in the animation process. This included using computers to facilitate drawing-based animation, for example, by painting images, by generating in-between images (“tweening”), and the like. This also included using computers to augment stop motion animation techniques. For example, physical models could be represented by virtual models in computer memory, and manipulated.
One of the pioneering companies in the computer-generated animation (CG animation) industry was Pixar. Pixar is more widely known as Pixar Animation Studios, the creators of animated features such as “Toy Story” (1995) and “Toy Story 2” (1999), “A Bugs Life” (1998), “Monsters, Inc.” (2001), “Finding Nemo” (2003), “The Incredibles” (2004), and others. In addition to creating animated features, Pixar developed computing platforms specially designed for CG animation, and CG animation software now known as RenderMan®. RenderMan® was particularly well received in the animation industry and recognized with two Academy Awards®. RenderMan® renders images based upon conceptual “animation assets” including files that describe a scene, that describe an object, and the like.
Scenes to be rendered are typically specified (assembled) by many users, including animators, lighters, shaders, modelers, technical directors, and the like. These scene descriptor files typically includes descriptions of other animation assets including objects, camera angles, lighting sources, and the like in a single file.
Drawbacks to having a single scene descriptor file include other animation assets include that only one user could work on a scene at a time. Another drawback included that objects that are included in multiple scenes had to be stored within each scene descriptor file, thus wasting memory.
To address these drawbacks, Pixar developed an internal technique for segmenting a scene descriptor file from one large file into a series of smaller files. As described in the co-pending application described above, Pixar developed and used the concept of “hook set” files and references to “hook files” to describe a scene, a “shot” (a series of related scenes) and the like. As such, a typical scene descriptor files is composed of references to a number of separate object data files. Accordingly, an object could be stored once, but used and referenced in more than one scene. Additionally, different users could modify different objects in a scene at the same time.
One method for providing access to animation assets to many different users has been with the use of a centralized file server, sometimes in the form of an asset management system. By using an asset management system, the proliferation of different versions of animation assets were controlled and the consistency of animation assets in different scenes was improved. In such systems, the asset management system received requests from client computers for animation assets, and in response, the asset management system would locate the animation asset and provide the asset to the client computers. Over time, the assets tracked by asset management systems have expanded to include not just animation assets, but any other file or piece of data that may be useful for a given project. For example, assets may include digital photographs, text files, and even abstract assets, such as assets that track human resources. Asset management systems typically receive an asset name and asset data from one or more client computers. Additionally, various asset management systems also track various pieces of metadata associated with the asset along with the asset data itself. For example, some asset management systems may maintain detailed information chronicling the evolution of an asset as it is modified by various authors over time. The asset management system may track metadata that helps to show the differences between checked-in versions of a given asset, comments added by various authors, and the like. In some asset management systems, the metadata may be limited to metadata created by an operating system or an application associated with the asset. Such metadata may include data on when the asset was first created or when the asset was last modified.
FIG. 8 is a block diagram of a typical asset management system. The diagram shows how asset management systems are commonly used in the prior art.
In FIG. 8, a set of clients 900 have access to two distinct asset management systems 1000 and 1010. Client 910, for example, can access assets 1003 located in a storage resource 1003 controlled by the asset management system 1000. Typically, the client 910 will use the asset management system's application programming interface (API) 1001 to gain access to the assets 1003. Similarly, other clients can access assets stored in asset management systems using the appropriate API. APIs 1001 and 1011 may be distinct from each other with a completely different set of available commands that can be issued against their respective asset management systems.
As is shown in FIG. 8, any client wishing to access assets stored in an asset management system generally uses the respective APIs to gain access. Direct access to any stored assets is usually forbidden in an asset management system. One rationale for limiting access to assets is that asset management systems are typically designed so that changes in the asset are carefully managed, tracked, and capable of being undone in case a problem is caused by the change in the asset. The asset management system, in essence, stores its assets in a black box and allows access to its assets via the API of the asset management system.
The inventors have determined that drawbacks to a centralized server for managing a file storage system includes that it is a single point of failure and slowness. For example, if the centralized server were down, no access to animation assets could be performed and the entire animation process would halt. This would last until the server were brought back up. Another drawback was that a centralized server scaled poorly with increasing number of clients, leading to a performance bottleneck. For example, because a centralized server could server only one request at a time, if five clients requested the same animation asset, the last client would have to wait until the first four clients were served.
Another problem with current asset management systems is that asset management systems often do not allow clients to have much, if any, control over how assets are stored within an asset management system. As a result, various inefficiencies may arise, especially when large asset are being managed by the asset management system. It is currently very difficult to allow asset management systems to manage certain aspects of the assets while simultaneously exerting any significant control over how the asset management system actually stores the assets. There are instances where it may be desirable to separate the storage functionality offered by asset management systems from the tracking and logging capabilities offered by asset management systems.
Accordingly what is desired is an improved method and apparatus for asset management, without the drawbacks described above.